java中{}前面没有修饰词,是什么意思?

来源:百度知道 编辑:UC知道 时间:2024/06/07 17:38:10
public class Example{
static String stra = new String("hello world");
{
stra = "hello";
System.out.println("初始块被调用");
}
static{
stra = "STATIC";
System.out.println("静态初始块被调用");
}
public Example(){
stra = "Welcome To Contructor";
System.out.println("构造函数被调用");
}
public void show(){
System.out.println(stra);
}
public static void main(String [] args){
Example example = new Example();
example.show();
}
}
// 运行结果:
// 静态初始块被调用
// 初始块被调用
// 构造函数被调用
// Welcome To Constructor

其中
{
stra = "hello";
System.out.println("初始块被调用");
}
的{}去掉后就出错了,为什么呢?{}在些是什么意思?

这个是一个关于加载java程序的先后顺序的例子

写得很好

{
stra = "hello";
System.out.println("初始块被调用");
}

是一个代码块 在程序加载的时候自动运行 运行在static void main 之前

运行在static 代码块之后

java的一般程序语句必须得写在{}程序块之内 最外面的{}是这个类的范围

不能算{}程序块 所以你会发现 在最外面的{}里面只能够建立或声明其他的

{}块 ,或者是定义字段,也就是成员数据,但是并不能书写任何语句

这个应该算是java的语言规范吧 为了健壮,安全,封装,对象等等 你会发现这

样子其实更方便 更适合我们的思维

关于java执行顺序可以看我的bolg:
http://hi.baidu.com/stone%5Fen/blog/item/72fa87dcb30f45a7cd1166ba.html

{}包围是一个作用域,它是在方法之前执行的。例如声明一个变量,并初始化(即类的属性)。而{}是与这些声明有同样执行优先级(只是前后差别)。只是{}中可以有复杂的赋值语句之类的。而复杂的语句在{}外是不允许存在的。另外{}中声明的变量只能在{}内有效。这就是{}的大大优势了!!

静态初始化我就不说了,至于去掉{}不能运行那是因为System.out.println()要放到方法内部执行,或者静态初始化块

static 修饰的是代码静态块..

这种静态块只是在代码第一次加载的时候运行....运行一次以后都不运行..